<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Aria: Laser Scan Log File Format</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Aria
   &#160;<span id="projectnumber">2.9.1</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('LaserLogFileFormat.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">Laser Scan Log File Format </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>A log of raw laser and robot data can be created using an <a class="el" href="classArLaserLogger.html" title="This class can be used to create log files for the laser mapper. ">ArLaserLogger</a> object and driving the robot manually with a joystick or other means.</p>
<p>This log file can then be futher processed, for example by loading it into Mapper3 or MobilePlanner, which corrects errors and creates a more accurate map suitable for navigation and localization. Laser log file names conventionally end in ".2d" and are sometimes referred to as ".2d files" or "2d files".</p>
<p>The log file is a text file, and can be opened in any text editor. The format is as follows. First, general information about the scan appears:</p>
<p>The file starts with the word "LaserOdometryLog", followed on each line by either a comment, or a tag and a space separated list of data values. The tag that starts a line of data is followed by a colon character (<code>:</code>). A comment line starts with a <code>#</code> character, and should be ignored. A program should also ignore any lines that start with tags not described here.</p>
<pre>
LaserOdometryLog
#Created by ARIA's ArLaserLogger
version: 3
useEncoderPose: <em>1|0</em>
sick1pose: <em>X</em> <em>Y</em> <em>Theta</em>
sick1conf: <em>LeftFOV</em> <em>RightFOV</em> <em>Samples</em> 
locationTypes: <em>robot</em> <em>robotGlobal</em> <em>robotRaw</em>
</pre><p>If <code>useEncoderPose:</code> is followed by <code>1</code>, then only the robot's encoder-based position was used when scanning. If <code>0</code>, then other sources such as gyroscopic correction may have been used.</p>
<p><code>sick1Pose:</code> is followed by the position of the laser device in the horizontal plane, relative to the center of the robot. This provides an offset from laser readings' origin to robot position. <em>X</em> is the forward-back position (positive forward, negative backward), <em>Y</em> is the left-right position (positive right, negative left), <em>Theta</em> is the angle offset (counter-clockwise, usually it is 0). <code>sick1conf:</code> is followed by some operating parameters of the laser device itself. <em>Left FOV</em> and <em>Right FOV</em> indicate the total field of view or angle of sweep of the laser in degrees (typically they are equivalent in magnitude, since the field of view of the SICK LMS-200 is always centered). <em>Samples</em> is the number of samples taken per sweep within that field of view. The <code>locationTypes</code> line, if present, lists what kinds of robot position data will be available in the log. Zero or more of the possible types may be listed. (If <code>locationTypes</code> is not present, you may assume that <code>robot</code> is available, or just check for all types when parsing the file.)</p>
<p>If you are generating a laser scan log file with software other than <a class="el" href="classArLaserLogger.html" title="This class can be used to create log files for the laser mapper. ">ArLaserLogger</a>, then you may replace the message in the comment in the second line, for example: <code>#Created by my custom laser scan logger</code>. This comment is for informational purposes only.</p>
<p>It is also possible for other metadata to appear following this initial block, with different initial tags. You can ignore these.</p>
<p>Then, as a scan is being recorded, the following lines are written when triggered by the robot having moved or turned by a certain amount:</p>
<pre>
scan1Id: <em>N</em>
time: <em>t.tt</em>
velocities: <em>Vel</em> <em>RotVel</em> <em>LatVel</em>
robot: <em>X</em> <em>Y</em> <em>Theta</em>
...
scan1: <em>readings...</em>
</pre><p>Where <em>t.tt</em> is the time in seconds since the start of scanning when this block was added to the scan log; <em>X</em>, <em>Y</em> and <em>Theta</em> is the position of the robot and <em>Vel</em> and <em>RotVel</em> are the velocities when these laser readings were taken; <em>readings...</em> is a list of space separated point pairs, a pair for the last point detected by each reading in the last sweep of the laser. Each pair defines a point relative to the robot, where a reading detected an obstacle. (Note, In old versions of the log format, <code>sick1</code> was used instead of <code>scan1</code>.)</p>
<p>In addition to <code>robot:</code>, additional lines providing other measures of robot position may be present (these will be listed in the <code>locationTypes:</code> header.) <code>robot:</code> provides the encoder pose, <code>robotGlobal:</code> is a corrected global pose,</p>
<p>If use of special SICK laser reflectors is enabled (rare), then the following line is written before the <code>scan1:</code> line:</p>
<pre>
reflector1: <em>levels...</em>
</pre><p>Where <em>levels...</em> is a reflectance value for each reading in the <code>scan1:</code> line to follow.</p>
<p>If during the run, the 'g' key or the second joystick button is pressed, then the following lines are added:</p>
<pre>
time: <em>t.tt</em>
robot: <em>X</em> <em>Y</em> <em>Theta</em> <em>Vel</em> <em>RotVel</em>
cairn: GoalWithHeading "" ICON_GOALWITHHEADING "goal&lt;i&gt;N&lt;/i&gt;"
</pre><p>Where the values after <code>time:</code>, <code>#rawRobot:</code> and <code>robot:</code> are as above, and <em>N</em> is incremented with each goal (i.e. goal0, goal1, goal2, etc.). This goal will be added to the final map at the position of the robot to define a goal or other point of interest in the map. </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
